﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Mappings;

namespace Apollo.Modules.Salary
{
    [NHibernateEntity(Table = "Payrolls")]
    public class Payroll : ITrackable
    {
        public Payroll() { }
        
        [PrimaryKey]
        public virtual int Id { get; set; }

        [BelongsTo(Column = "ID_Employee")]
        public virtual Employee Employee { get; set; }

        [BelongsTo(Column = "ID_AccountingMonth")]
        public virtual AccountingMonth AccountingMonth { get; set; }

        [BelongsTo(Column = "ID_Role")]
        public virtual Role Role { get; set; }

        [BelongsTo(Column = "ID_Position")]
        public virtual Position Position { get; set; }

        [Property]
        public virtual double BaseIncomeValue { get; set; }

        [Property]
        public virtual double GrossIncomeValue { get; set; }

        [Property]
        public virtual double NetIncomeValue { get; set; }

        [Property]
        public virtual double PaidValue { get; set; }

        [Property]
        public virtual string CostCenter { get; set; }



        [Property]
        public virtual DateTime InsertDate { get; set; }

        [Property]
        public virtual string InsertBy { get; set; }

        [Property]
        public virtual DateTime? ModifiedDate { get; set; }

        [Property]
        public virtual string ModifiedBy { get; set; }



        [Property]
        public virtual string Code { get; set; }

        [Property]
        public virtual string InternalCode { get; set; }

        [Property]
        public virtual string IBAN { get; set; }

        [Property]
        public virtual string Street { get; set; }

        [Property]
        public virtual string StreetNumber { get; set; }

        [Property]
        public virtual string BuildingName { get; set; }

        [Property]
        public virtual string BuildingNumber { get; set; }

        [Property]
        public virtual string AppartmentNumber { get; set; }

        [Property]
        public virtual string FloorNumber { get; set; }

        [Property]
        public virtual string City { get; set; }

        [Property]
        public virtual string District { get; set; }

        [Property]
        public virtual string Country { get; set; }

    }
}
